WML - язык разметки, основанный на XML
(extensible Markup Language). Официальная спецификация WML
разработана и поддерживается WAP Forum,
производственным консорциумом, основанном Nokia,
Phone.com, Motorola и Ericsson. Эта спецификация определяет
синтаксис, переменные и элементы используемые в
файлах WML. Последнее определение типа документа
(Document Type Definition) для тех, кто знаком с XML, доступны
по адресу:
Любой правильный XML-файл должен соответствовать этому DTD. В противном случае он не будет правильно обработан.
В этой главе будет рассказано об основах XML.
WML базируется на XML, языке разметки
получившем невероятную поддержку благодаря
своей способности описывать данные (HTML, кстати,
используется для описания представления данных).
HTML - предопределяет те тэги, которые могут быть
использованы для описания страницы так, чтобы ее
смог правильно понять и обработать броузер. XML, в
свою очередь, позволяет создателю документа
определять такой набор тэгов, которой он считает
необходимым. Этот набор тэгов группируется затем
в набор грамматических "правил", называемых
по-другому Определение Типа Документа или проще
DTD. Как уже упоминалось ранее, DTD, используемый для
описания WML, расположен по адресу:
В телефоне или в любом другом коммуникационном устройстве, заявленном как WAP-совместимое, загружено специальное программное обеспечение (известное как микроброузер), которое полностью понимает, как обрабатывать все вариации WML 1.1 DTD.
Самая первая фраза внутри любого XML-документа называется пролог. В силу стандарта он содержит две строчки кода: определение версии XML и DTD (указатель на файл, содержащий DTD)
Пролог выглядит следующим образом.
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Следом за прологом, в каждом XML-документе содержится один единственный элемент, который содержит в себе остальные подэлементы. Так же как и в HTML этими элементами являются угловые скобки: <> и </>. Например: <element>data</element>. В документе должен содержаться только один элемент описывающий сам документ. В WML этим элементом является <wml>. Все остальные элементы содержатся уже внутри него.
Два самых распространенных способа хранения информации внутри XML-документа это элементы и их атрибуты. Элементы определяют структурную разметку внутри документа открытием и закрытием определенных тэгов. Элементы, в свою очередь могут содержать подэлементы. Атрибуты в основном используются для описания элементов. В качестве примера можно привести следующий фрагмент кода:
<!-- This is the Login Card --> <card id="LoginCard" title="Login"> Please select your user name. </card>
В этом примере элемент card содержит атрибуты id и title. Комментарий в WML, также как и в HTML заключается между тэгами <!-- и -->. В дальнейшем мы будем использовать элементы и их атрибуты для написания примеров.
В WML описывается набор элементов, которые можно комбинировать для создания WML-документа. Эти элементы можно условно разделить на две группы: Элементы типа Deck/Card и элементы обработки событий.
Элементы типа Deck/Card
wml card template head access meta
Элементы обработки событий
do ontimer onenterforward onenterbackward onpick onevent postfield
Задачи
go prev refresh noop
setvar
input select option optgroup fieldset
Анкоры, Картинки и Таймеры
a anchor img timer
br p table tr td
Каждый их этих элементов может быть применен в документе используя следующий синтаксис:
<элемент> значение элемента </элемент>
Если элемент не содержит внутри себя какую либо информацию (обычно такое случается с элементом форматирования <br>), вы можете использовать тэг с добавленным к нему "/" (например <br/>).
WML был разработан для для устройств с низкой пропускной способностью и маленьким дисплеем. В качестве составной этого дизайна была применена концепция дек и карт. Один WML-документ (а точнее элементы, содержащиеся внутри элемента <wml>) называется декой (deck). Интерактивное взаимодействие с пользователем осуществляется с помощью карт (card). Достоинство такой реализации заключается в том, что несколько экранов могут быть загружены на клиентское устройство за один раз. Используя WMLScript, обработка действий пользователя может быть произведена с применением находящихся в одной деке карт, исключая тем самым множественные транзакции с сервером. Конечно, в связи с ограниченными ресурсами клиентского устройства возникает другая проблема. Поэтому вам вполне возможно придется разбрасывать ваши карты по разным деками во избежании чрезмерного увеличения объема одного файла.
Поскольку, как мы говорили ранее, в одной деке может содержаться несколько карт, нам потребуется механизм хранения информации из одной карты для ее последующего использования в другой. Этот механизм обеспечивается переменными. Переменные могут быть созданы и определены, используя несколько различных методов.
<setvar name="x" value="123"/>
<select name="x" title="X Value:">
Несмотря на то, что мы не описывает WMLScript, следует отметить, что WML и WMLScript используют одни и те же переменные в рамках одной деки.
Без возможности производить различные операции с информацией на сервере, WML остался бы просто средством форматированного вывода текста. Добавление такой возможности, напротив, открывает любому WAP-совместимому устройству пути передачи сообщений через Интернет, промышленному использованию на предприятии и электронной коммерции. WAP-совместимое устройство взаимодействуют с подобными источниками информации через WAP-шлюз. Этот шлюз должен уметь взаимодействовать с различными стандартами сотовой связи, такими как CDMA, GSM или GPRS. Однако, вполне возможно установить тестовый шлюз в сочетании с популярными веб-серверами (такими как MS IIS или Apache) прямо в вашей локальной сети. Мы не будем тут сильно вдаваться в детали процесса установки шлюза, однако нельзя не предостеречь вас от самой распространенной ошибки. Вам обязательно необходимо добавить определения следующих типов в конфигурацию веб-сервера.
WML text/vnd.wap.wml wml WMLScript text/vnd.wap.wmlscript wmls
Рис.5. Эмулятор WAP